// 模拟消息数据
import type { Message, MessageListResponse } from '@/types/message'

// 生成模拟消息数据
export const generateMockMessages = (params: {
  page: number;
  pageSize: number;
  type?: number;
  status?: number;
}): MessageListResponse => {
  const { page, pageSize, type, status } = params

  // 模拟消息数据
  const allMessages: Message[] = [
    {
      id: 1,
      title: '系统维护通知',
      content: '尊敬的医生用户，系统将于2023年12月15日凌晨2:00-4:00进行例行维护，届时系统将暂停服务。给您带来的不便，敬请谅解。',
      type: 1, // 系统消息
      status: 0, // 未读
      createTime: '2023-12-10T10:00:00'
    },
    {
      id: 2,
      title: '新预约提醒',
      content: '您有一个新的预约申请，患者张三（男，45岁）预约了2023年12月18日上午9:00的门诊，请及时查看并确认。',
      type: 2, // 预约消息
      status: 0, // 未读
      createTime: '2023-12-11T14:30:00'
    },
    {
      id: 3,
      title: '问诊消息',
      content: '患者李四发来了新的问诊消息，请及时回复。患者描述：最近总是感到头晕目眩，特别是起床时，请问这是什么原因？',
      type: 3, // 问诊消息
      status: 1, // 已读
      createTime: '2023-12-12T09:15:00'
    },
    {
      id: 4,
      title: '紧急医疗处理',
      content: '有一位患者需要紧急医疗处理，患者王五（男，60岁）出现胸痛症状，已被送往急诊室，请立即前往处理。',
      type: 4, // 紧急消息
      status: 0, // 未读
      createTime: '2023-12-13T16:45:00'
    },
    {
      id: 5,
      title: '系统功能更新',
      content: '尊敬的医生用户，系统已更新了远程会诊功能，现在您可以通过视频方式与其他医生进行病例讨论。详情请查看帮助文档。',
      type: 1, // 系统消息
      status: 1, // 已读
      createTime: '2023-12-14T11:20:00'
    },
    {
      id: 6,
      title: '预约取消通知',
      content: '患者赵六取消了原定于2023年12月20日下午3:00的预约，请知悉。',
      type: 2, // 预约消息
      status: 1, // 已读
      createTime: '2023-12-15T13:10:00'
    },
    {
      id: 7,
      title: '患者随访提醒',
      content: '患者钱七的术后随访时间已到，请安排随访事宜。',
      type: 3, // 问诊消息
      status: 0, // 未读
      createTime: '2023-12-16T10:30:00'
    },
    {
      id: 8,
      title: '医疗记录更新',
      content: '患者孙八的医疗记录已更新，新增了最新的检查报告，请查看。',
      type: 3, // 问诊消息
      status: 1, // 已读
      createTime: '2023-12-17T15:40:00'
    },
    {
      id: 9,
      title: '紧急会议通知',
      content: '医院将于2023年12月22日上午10:00召开紧急会议，讨论新冠防控措施，请务必准时参加。',
      type: 1, // 系统消息
      status: 0, // 未读
      createTime: '2023-12-18T09:00:00'
    },
    {
      id: 10,
      title: '处方审核提醒',
      content: '您有一个新的处方需要审核，请及时处理。',
      type: 2, // 预约消息
      status: 1, // 已读
      createTime: '2023-12-19T14:20:00'
    },
    {
      id: 11,
      title: '紧急求助',
      content: '急诊科请求协助处理一例复杂病例，患者周十（女，28岁）出现多器官功能衰竭症状，请立即前往会诊。',
      type: 4, // 紧急消息
      status: 0, // 未读
      createTime: '2023-12-20T18:30:00'
    },
    {
      id: 12,
      title: '培训通知',
      content: '医院将于2024年1月5日-7日举办新医疗设备使用培训，请安排时间参加。',
      type: 1, // 系统消息
      status: 1, // 已读
      createTime: '2023-12-21T11:15:00'
    }
  ]

  // 根据类型和状态筛选消息
  let filteredMessages = [...allMessages]

  if (type !== undefined && type !== 0) {
    filteredMessages = filteredMessages.filter(msg => msg.type === type)
  }

  if (status !== undefined && status !== -1) {
    filteredMessages = filteredMessages.filter(msg => msg.status === status)
  }

  // 按创建时间降序排序
  filteredMessages.sort((a, b) => new Date(b.createTime).getTime() - new Date(a.createTime).getTime())

  // 计算分页
  const start = (page - 1) * pageSize
  const end = start + pageSize
  const paginatedMessages = filteredMessages.slice(start, end)

  // 计算未读消息数
  const unreadCount = allMessages.filter(msg => msg.status === 0).length

  return {
    list: paginatedMessages,
    total: filteredMessages.length,
    unreadCount
  }
}

// 模拟获取消息详情
export const getMockMessageDetail = (msgId: number): Message | null => {
  const message = allMessages.find(msg => msg.id === msgId)
  return message || null
}

// 所有模拟消息
const allMessages: Message[] = [
  {
    id: 1,
    title: '系统维护通知',
    content: '尊敬的医生用户，系统将于2023年12月15日凌晨2:00-4:00进行例行维护，届时系统将暂停服务。给您带来的不便，敬请谅解。',
    type: 1, // 系统消息
    status: 0, // 未读
    createTime: '2023-12-10T10:00:00'
  },
  {
    id: 2,
    title: '新预约提醒',
    content: '您有一个新的预约申请，患者张三（男，45岁）预约了2023年12月18日上午9:00的门诊，请及时查看并确认。',
    type: 2, // 预约消息
    status: 0, // 未读
    createTime: '2023-12-11T14:30:00'
  },
  {
    id: 3,
    title: '问诊消息',
    content: '患者李四发来了新的问诊消息，请及时回复。患者描述：最近总是感到头晕目眩，特别是起床时，请问这是什么原因？',
    type: 3, // 问诊消息
    status: 1, // 已读
    createTime: '2023-12-12T09:15:00'
  },
  {
    id: 4,
    title: '紧急医疗处理',
    content: '有一位患者需要紧急医疗处理，患者王五（男，60岁）出现胸痛症状，已被送往急诊室，请立即前往处理。',
    type: 4, // 紧急消息
    status: 0, // 未读
    createTime: '2023-12-13T16:45:00'
  },
  {
    id: 5,
    title: '系统功能更新',
    content: '尊敬的医生用户，系统已更新了远程会诊功能，现在您可以通过视频方式与其他医生进行病例讨论。详情请查看帮助文档。',
    type: 1, // 系统消息
    status: 1, // 已读
    createTime: '2023-12-14T11:20:00'
  },
  {
    id: 6,
    title: '预约取消通知',
    content: '患者赵六取消了原定于2023年12月20日下午3:00的预约，请知悉。',
    type: 2, // 预约消息
    status: 1, // 已读
    createTime: '2023-12-15T13:10:00'
  },
  {
    id: 7,
    title: '患者随访提醒',
    content: '患者钱七的术后随访时间已到，请安排随访事宜。',
    type: 3, // 问诊消息
    status: 0, // 未读
    createTime: '2023-12-16T10:30:00'
  },
  {
    id: 8,
    title: '医疗记录更新',
    content: '患者孙八的医疗记录已更新，新增了最新的检查报告，请查看。',
    type: 3, // 问诊消息
    status: 1, // 已读
    createTime: '2023-12-17T15:40:00'
  },
  {
    id: 9,
    title: '紧急会议通知',
    content: '医院将于2023年12月22日上午10:00召开紧急会议，讨论新冠防控措施，请务必准时参加。',
    type: 1, // 系统消息
    status: 0, // 未读
    createTime: '2023-12-18T09:00:00'
  },
  {
    id: 10,
    title: '处方审核提醒',
    content: '您有一个新的处方需要审核，请及时处理。',
    type: 2, // 预约消息
    status: 1, // 已读
    createTime: '2023-12-19T14:20:00'
  },
  {
    id: 11,
    title: '紧急求助',
    content: '急诊科请求协助处理一例复杂病例，患者周十（女，28岁）出现多器官功能衰竭症状，请立即前往会诊。',
    type: 4, // 紧急消息
    status: 0, // 未读
    createTime: '2023-12-20T18:30:00'
  },
  {
    id: 12,
    title: '培训通知',
    content: '医院将于2024年1月5日-7日举办新医疗设备使用培训，请安排时间参加。',
    type: 1, // 系统消息
    status: 1, // 已读
    createTime: '2023-12-21T11:15:00'
  }
]
